package com.example.filecopy;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

/**
 * 带输入框的确认弹窗工具类
 */
public class InputConfirmDialogUtil {

    /**
     * 显示带输入框的确认弹窗
     * @param context 上下文
     * @param title 弹窗标题
     * @param hint 输入框提示文字
     * @param defaultText 输入框默认文字
     * @param inputListener 确认后的回调（返回输入的内容）
     */
    public static void showInputDialog(Context context, String title, String hint,
                                       String defaultText, InputListener inputListener, Button button) {
        // 创建输入框
        EditText editText = new EditText(context);
        editText.setHint(hint);
        editText.setText(defaultText);
        // 设置输入框布局（添加边距）
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        int margin = dp2px(context, 16);
        params.setMargins(margin, margin, margin, 0);
        editText.setLayoutParams(params);

        // 创建弹窗
        new AlertDialog.Builder(context)
                .setTitle(title)
                .setView(editText) // 设置输入框为弹窗内容
                .setPositiveButton("确认", (dialog, which) -> {
                    String input = editText.getText().toString().trim();
                    if (input.isEmpty()) {
                        Toast.makeText(context, "输入内容不能为空", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    // 调用回调接口返回输入内容
                    dialog.dismiss();
                    button.setVisibility(View.GONE);
                    inputListener.onConfirm(input);
                })
                .setNegativeButton("取消", (dialog, which) -> dialog.dismiss())
                .setCancelable(false)
                .show();
    }


    // dp转px（适配不同屏幕）
    private static int dp2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    // 输入确认的回调接口
    public interface InputListener {
        void onConfirm(String input);
    }
}
